//axios 的设置

import axios from "axios";

//引入ElementUI中的全局提示方法
import {MessageBox,Message }from "element-ui"
// console.log(ElementUI);
//引入进度条
import nprogress from "nprogress"

//对axios进行一些简单的配置
//axios的公共样式
let http = axios.create({
  withCredentials: true, //是否携带凭证
  baseURL: "/api", //基础地址
  timeout: 5000, //超时设置
});

//请求拦截

http.interceptors.request.use(config=>{
   //开启进度条
   nprogress.start()
    //config就是请求的对象 里面可以拿到请求的地址 参数等
   //获取在localStorage中存储的token
   let token = localStorage.getItem('wf-token')
   config.headers.authorization = token
    //return config 理解为放行
    // console.log(config);
    return config;

})

// //相应拦截
// //可以在这个拦截器中处理一些公共错误
http.interceptors.response.use(config=>{
    //config是响应对象  里面可以拿到服务器相应的内容
    nprogress.done()
    //return config 就是放行
    //嵌套结构语法
    
    let {data:{state,msg,code}}= config

    //10022 登入过期
    //1004 token过期
    //10026 没有权限
    let codes = ['10022','1004','10026']

    if(codes.includes(code)){
      //清除token

      localStorage.removeItem('wf-token')
      //刷新页面
      location.reload()
    }
   
     //一个需要排除掉不弹窗的接口

     let excludeUrl = ["/order/query_order_status"]

      //判断不需要弹窗的这个数组中是否包含当前的请求的这个路径
    let isExclude = excludeUrl.includes(config.config.url)

    // console.log(state);
    //通过拦截器判断后端相应的state
    if(!state&& !isExclude){
      //全局提示
     
      MessageBox.alert(msg,"错误提示",{type:'error'})
    }

    return config;

});

export default http;
